var vm = new Vue({
    el:"#app",
    data:{
        isShowForm:false,
        jobName:"",
        author:""
    },
    methods:{
        /**
         * 初始化bootstrapTable
         */
        initTable:function(){
            var _this = this;
            $('#tbSchedule').bootstrapTable($.extend(bootstrapTableOption,{
                url: g_comm.manager_url+'/scheduleJob/list',           //请求后台的URL（*）
                toolbar: '#toolbar',                          //工具按钮用哪个容器
                queryParams: _this.queryParams,               //传递参数（*）
                uniqueId: "id",                     //每一行的唯一标识，一般为主键列
                columns: [{
                    checkbox: true
                }, {
                    field: 'jobName',
                    title: '任务名称'
                }, {
                    field: 'beanName',
                    title: 'bean名称'
                }, {
                    field: 'methodName',
                    title: '方法名称'
                }, {
                    field: 'params',
                    title: '执行参数'
                }, {
                    field: 'cronExpression',
                    title: '执行时间'
                }, {
                    field: 'status',
                    title: '任务状态',
                    formatter:function (value,row,index) {
                        if (value == '0') {
                            return '<span class="label label-success">正常</span>';
                        } else if (value == '1') {
                            return '<span class="label label-danger">暂停</span>';
                        }
                    }
                }, {
                    field: 'author',
                    title: '负责人'
                }, {
                    field: 'alarmEmail',
                    title: '报警邮箱'
                }, {
                    field: 'remark',
                    title: '任务描述'
                }, {
                    field: 'createTime',
                    title: '创建时间',
                    formatter:function(value,row,index){
                        if(value!=null){
                            return new Date(value).toString("yyyy-MM-dd HH:mm:ss");
                        }else{
                            return "";
                        }
                    }
                }
                ]
            }));
        },
        /**
         * 删除
         */
        del:function(){
            //获取选中的行
            var selectRows = $('#tbSchedule').bootstrapTable('getSelections');
            if(selectRows.length==0){
                layer.alert('请选择要删除的数据!',{
                    title: '提示框',
                    icon:0
                });
                return;
            }
            var ids = "";
            $(selectRows).each(function (index, obj) {
                ids+=obj.id+",";
            });
            ids=ids.substring(0,ids.length-1);
            parent.layer.confirm("你确定是要删除吗！", {btn: ['确定','取消']},
                function(){//确定事件
                    //关闭confirm Dialog
                    parent.layer.closeAll('dialog');
                    $.ajax({
                        url: g_comm.manager_url+"/scheduleJob/delete",
                        data: {ids:ids},
                        success: function(r){
                            if(r.code == 0){
                                layer.msg('删除成功！', {icon: 1});
                                //重新刷新数据
                                $('#tbSchedule').bootstrapTable('refresh');
                            }else{
                                layer.alert(r.msg,{
                                    title: '提示框',
                                    icon:0
                                });
                            }
                        }
                    });
                });
        },

        /**
         * 查询参数
         * @param params
         */
        queryParams:function (params) {
            return {   //这里的键的名字和控制器的变量名必须一直，这边改动，控制器也需要改成一样的
                limit: params.limit,   //页面大小
                offset: params.offset,  //页码
                jobName: this.jobName,
                author: this.author
            };
        },
        /**
         * 新增
         */
        add:function(){
            $("#scheduleForm")[0].reset();//重置Form表单
            showLayer("新增任务","scheduleCreateOrUpdate",800,600);
        },
        /**
         * 保存
         */
        save:function(){
            if(!this.validate()){
                return false;
            }
            var saveUrl = g_comm.manager_url+'/scheduleJob/add';
            var id = $("#id").val();
            if(id!=""){
                //编辑状态
                saveUrl = g_comm.manager_url+'/scheduleJob/update';
            }
           $.ajax({
                url:saveUrl,
                data:$("#scheduleForm").serialize(),
                success:function(result){
                    if(result.code == 0){
                        layer.closeAll(); //疯狂模式，关闭所有层
                        layer.msg('操作成功！', {icon: 1});
                        $("#id").val("");//清空隐藏域中的id，避免由于有id导致当成更新操作
                        //重新刷新数据
                        $('#tbSchedule').bootstrapTable('refresh');
                    }else{
                        layer.alert(result.msg,{
                            title: '提示框',
                            icon:0
                        });
                        return false;
                    }
                }
            });
        },
        /**
         * 修改
         */
        edit:function(){
            //获取选中的行
            var selectRows = $('#tbSchedule').bootstrapTable('getSelections');
            if(selectRows.length==0){
                layer.alert('请选择要编辑的数据!',{
                    title: '提示框',
                    icon:0
                });
                return;
            }
            if(selectRows.length>1){
                layer.alert('一次只能编辑的一条数据!',{
                    title: '提示框',
                    icon:0
                });
                return;
            }
            var rowData = selectRows[0];
            //填充Form表单数据
            loadData(rowData,"scheduleForm");
            showLayer("编辑任务","scheduleCreateOrUpdate",800,600);
        },
        /**
         * 校验
         * @returns {boolean}
         */
        validate: function () {
            var jobName = $("#jobName").val();
            if(jobName==""){
                layerAlert("请输入定时任务名称");
                return false;
            }
            var beanName = $("#beanName").val();
            if(beanName==""){
                layerAlert("请输入定时任务的spring bean名称");
                return false;
            }
            var methodName = $("#methodName").val();
            if(methodName==""){
                layerAlert("请输入定时任务要执行的方法名称");
                return false;
            }
            var cronExpression = $("#cronExpression").val();
            if(cronExpression==""){
                layerAlert("请输入定时任务执行的cron表达式");
                return false;
            }
            return true;
        },
        /**
         * 搜索
         */
        search:function () {
            $('#tbSchedule').bootstrapTable('refreshOptions',{pageNumber:1});
        },
        /**
         * 执行任务
         */
        run:function(){
            //获取选中的行
            var selectRows = $('#tbSchedule').bootstrapTable('getSelections');
            if(selectRows.length==0){
                layerAlert("请选择要立即执行的任务!");
                return;
            }
            var ids = "";
            $(selectRows).each(function (index, obj) {
                ids+=obj.id+",";
            });
            ids=ids.substring(0,ids.length-1);
            parent.layer.confirm("你确定是要立即执行吗！", {btn: ['确定','取消']},
                function(){//确定事件
                    //关闭confirm Dialog
                    parent.layer.closeAll('dialog');
                    $.ajax({
                        url: g_comm.manager_url+"/scheduleJob/run",
                        data: {"ids":ids},
                        success: function(r){
                            if(r.code == 0){
                                layer.msg('操作成功！', {icon: 1});
                                //重新刷新数据
                                $('#tbSchedule').bootstrapTable('refresh');
                            }else{
                                layerAlert(r.msg);
                            }
                        }
                    });
                });
        },
        /**
         * 暂停任务
         */
        pause:function(){
            //获取选中的行
            var selectRows = $('#tbSchedule').bootstrapTable('getSelections');
            if(selectRows.length==0){
                layerAlert("请选择要暂停的任务!");
                return;
            }
            var ids = "";
            $(selectRows).each(function (index, obj) {
                ids+=obj.id+",";
            });
            ids=ids.substring(0,ids.length-1);
            parent.layer.confirm("你确定是要执行暂停任务操作吗！", {btn: ['确定','取消']},
                function(){//确定事件
                    //关闭confirm Dialog
                    parent.layer.closeAll('dialog');
                    $.ajax({
                        url: g_comm.manager_url+"/scheduleJob/pause",
                        data: {"ids":ids},
                        success: function(r){
                            if(r.code == 0){
                                layer.msg('操作成功！', {icon: 1});
                                //重新刷新数据
                                $('#tbSchedule').bootstrapTable('refresh');
                            }else{
                                layerAlert(r.msg);
                            }
                        }
                    });
                });
        },
        /**
         * 恢复任务
         */
        resume:function(){
            //获取选中的行
            var selectRows = $('#tbSchedule').bootstrapTable('getSelections');
            if(selectRows.length==0){
                layerAlert("请选择要恢复的任务!");
                return;
            }
            var ids = "";
            $(selectRows).each(function (index, obj) {
                ids+=obj.id+",";
            });
            ids=ids.substring(0,ids.length-1);
            parent.layer.confirm("你确定是要执行恢复任务操作吗！", {btn: ['确定','取消']},
                function(){//确定事件
                    //关闭confirm Dialog
                    parent.layer.closeAll('dialog');
                    $.ajax({
                        url: g_comm.manager_url+"/scheduleJob/resume",
                        data: {"ids":ids},
                        success: function(r){
                            if(r.code == 0){
                                layer.msg('操作成功！', {icon: 1});
                                //重新刷新数据
                                $('#tbSchedule').bootstrapTable('refresh');
                            }else{
                                layerAlert(r.msg);
                            }
                        }
                    });
                });
        }
    },
    mounted:function () {
        this.initTable();
    }
});